using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using NEXEntidad;
using NEXServicio;

namespace A_CargaBiblioteca
{
    public partial class frmLlibroGrilla : Form
    {
        #region Constructores
        public frmLlibroGrilla()
        {
            InitializeComponent();
        }
        #endregion

        #region Eventos de Pantalla
        
        private void frmLlibroGrila_Load(object sender, EventArgs e)
        {
            try
            {
                buscador1.TipoObjeto = Enumeraciones.TypeObjeto.Autor;

                this.pie1.Descripcion = "Editar / Borar - Libro";
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        
        private void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;
                this.cargarGrilla();
                this.Cursor = Cursors.Arrow;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        private void nuevoLibroToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmLibroDet form = new frmLibroDet();
            form.ModoFormulario = Utilidad.ModoFormulario.Nuevo;
            //form.inicializar();
            form.ShowDialog();
        }

        private void agregarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                frmAutorDet frmAutores = new frmAutorDet();
                frmAutores.ModoFormulario = Utilidad.ModoFormulario.Nuevo;
                frmAutores.ShowDialog();
                //this.cargarComboAutor();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void editarEliminarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                frmAutorGrilla frmAutores = new frmAutorGrilla();
                frmAutores.ShowDialog();
                //this.cargarComboAutor();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void dgLibros_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            try
            {
                seleccionarLibro(e.RowIndex);
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        private void dgLibros_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                seleccionarLibro(e.RowIndex);
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        private void toolMenuBorrar_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgLibros.SelectedRows.Count > 0)
                {
                    int idLibro = Convert.ToInt32(dgLibros.SelectedRows[0].Cells[0].Value);
                    Libro unLibro = new Libro(idLibro);
                    this.Cursor = Cursors.WaitCursor;
                    if (unLibro.Eliminar())
                        this.cargarGrilla();
                    this.Cursor = Cursors.Default;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        private void exportarImagenesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                LibroCollection libros = Libro.Listar();
                foreach (Libro unLibro in libros)
                {
                    EditorialCollection editoriales = Editorial.ListarPorLibro(unLibro.Id, true);
                    foreach (Editorial unaEditorial in editoriales)
                    {
                        if (unaEditorial.TapaImagen != null && unaEditorial.NombreFileImagen == "")
                        {
                            string archivo = Guid.NewGuid().ToString();
                            unaEditorial.NombreFileImagen = Application.StartupPath  + "\\imagenes\\" + archivo + ".jpg";
                            unaEditorial.TapaImagen.Save(@"imagenes/" + archivo + ".jpg");
                            //Generales.SubirArchivo("ftp://www.neoexpresion.com.ar/neoexpresion.com.ar/tapaLibros/" + archivo + ".jpg", "usersite", "comuni2112", unaEditorial.NombreFileImagen);
                            unaEditorial.NombreFileImagen = archivo + ".jpg";
                            unaEditorial.Libro = unLibro;
                            unaEditorial.Salvar();
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        # region Metodos privados

        private void cargarGrilla()
        {
            try
            {
                Guid unico;
                unico = Guid.NewGuid();
                LibroCollection listaLibro = new LibroCollection();
                int? idAutor = null;
                string titulo;
                if (Convert.ToInt32(buscador1.Codigo) != 0)
                    idAutor = Convert.ToInt32(buscador1.Codigo);

                titulo = txtTitulo.Text;

                listaLibro = Libro.Listar(idAutor,titulo);

                dgLibros.AutoGenerateColumns = false;
                dgLibros.DataSource = listaLibro;

                dgLibros.Columns["IdLibro"].DataPropertyName = "Id";
                dgLibros.Columns["Titulo"].DataPropertyName = "Titulo";
                dgLibros.Columns["Autor"].DataPropertyName = "Autor";
                dgLibros.Columns["Categoria"].DataPropertyName = "Categoria";

                
            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        private void seleccionarLibro(int fila)
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;
                int idLibro = Convert.ToInt32(dgLibros.Rows[fila].Cells["IdLibro"].Value);
                if (idLibro != 0)
                {
                    Libro libro = new Libro(idLibro);
                    frmLibroDet form = new frmLibroDet();
                    libro.LlamarAObtener();
                    form.Objeto = libro;
                    form.ModoFormulario = Utilidad.ModoFormulario.Edicion;
                    //form.inicializar();
                    this.Cursor = Cursors.Default;
                    if (form.ShowDialog() == DialogResult.OK)
                    {
                        dgLibros.DataSource = null;
                        dgLibros.Rows.Clear();
                    }
                }
                else
                {
                    MessageBox.Show("Selecciona un libro para editar");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        
        #endregion






    }
}